草庐IT

c++ - 复制 boost::shared_ptr

全部标签

c - 如何绕过 "foreground lock timeout"激活我的窗口?

我正在尝试制作类似Launchy/Enso等的应用程序,当用户按下CapsLock键时它会弹出。为此,我需要安装一个低级键盘钩子(Hook)(WH_KEYBOARD_LL),随后我从中生成一个线程来显示要呈现给用户的对话框。问题是,当我以某种方式窃取焦点(例如通过单击另一个窗口)并随后短暂延迟按下CapsLock时,我的窗口没有获得键盘输入:输入转到后台窗口,即使我的窗口是“事件的”(通过查看标题栏)。当然,这会变得很烦人,因为我最终会在文本处理器(或聊天框...)中输入类似“visu”(“VisualStudio”)的内容,并且按下Enter,却没有意识到它没有按照我的预期进行。(有

c - 联网的机器代码是什么样的?

归根结底,我们编写的每一段代码最终都会变成汇编语言,然后变成机器语言。如果您正在编写汇编程序并希望在两台计算机之间执行简单的连接,您如何知道在汇编程序中使用哪些内存地址(更不用说偏移量了)?您是否需要知道与操作系统相关的具体地址?我只是想知道有人会如何编写一个真正“干净”和“高效”的消息传递库/编译器-让我感兴趣的是网络通信/IPC在汇编程序中到底是什么样子?我认为这个答案的一部分可能在于查询与操作系统相关的已知地址?例如0x4545456到0x60000000包含用于通信X等的Linux内核数据。 最佳答案 这些地址并不特定于您的

c - 了解用户何时按下向上/向下箭头

此代码打印出用户在按下输入按钮后键入的内容。main(){HANDLEstdinInput=0;DWORDnumEvents=0;DWORDnumEventsRead=0;DWORDnumReceivedRecords=0;DWORDfdwSaveOldMode;DWORDfdwMode;chardataBuffer[100];intbufferLen=0;stdinInput=GetStdHandle(STD_INPUT_HANDLE);if(stdinInput==INVALID_HANDLE_VALUE)perror("GetStdHandle");if(!GetConsoleM

在 Windows (C/C++) 上检查应用程序二进制文件的位数

是否可以在不运行/运行之前检查二进制文件(EXE)的位数?这可以在Linux上轻松完成,但我不熟悉Windows二进制格式。谢谢。 最佳答案 由于您将此问题标记为C,因此有一个Win32API函数GetBinaryType.不过,它不适用于DLL。if(GetBinaryType(argv[i],&bintype)){switch(bintype){caseSCS_32BIT_BINARY:typename=TEXT("Windows32Bit");break;caseSCS_64BIT_BINARY:typename=TEXT("

c++ - 如何知道所使用的微软 C runtime 的版本?

我有一个依赖于MSVCR90.dll的程序,我将它与主要可执行文件一起提供的库包括:ProgramFolder\Main.exeProgramFolder\MSVCR90.dll我想知道是否有新的更新可用(例如修复安全问题),我提供的更新是否优先于System32或SxS.有没有办法以编程方式知道正在使用哪个版本的C运行时? 最佳答案 您可以查看executablesimportheader查找它引用了哪个版本的C运行时。将其从system32目录中删除无济于事,反而会造成崩溃。 关于c

两个线程能否同时读取同一个const内存块

内存块在程序开始时被初始化和设置并且没有改变(CONST)。例如:静态常量inta=10;如果它依赖于环境/架构,那么这些设置是否安全:英特尔/AMDWin/Linux32/64位每个核心的线程或一个核心的所有线程。 最佳答案 对于所有架构读取const都是安全的 关于两个线程能否同时读取同一个const内存块,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12337926/

c++ - 如何复制当前进程?

复制当前进程以在Windows中生成另一个实例的最简单方法是什么?我知道Linux有fork(),但我只需要在同一进程中再次运行main,可能使用带有正确参数的CreateProcess()。 最佳答案 正如@DavidHeffernan评论的那样:STARTUPINFOsi;::memset(&si,0,sizeof(si));si.cb=sizeof(si);PROCESS_INFORMATIONpi;::CreateProcess(NULL,::GetCommandLine(),NULL,NULL,FALSE,0,NULL,N

c++ - 通过批处理文件在多个文件上添加标题

我有一个.c文件列表,我想在其中添加标题。这些文件位于一个文件夹中,批处理文件应该为该文件夹中的每个.c文件放置一个标题。我很想知道,我们如何才能做到这一点。我想插入的标题示例如下://///////////////////////////////////////////////////////////////////////////Name:TomVolvoRiddleRollNo:56/BS/352////////////////////////////////////////////////////////////////////////////谢谢,

windows - 如何允许用户选择要复制的目录?

我正在尝试编写一个基本上用于复制目标的批处理文件。现在,我想把它放到其他人可以使用它的地方,而不必进入并编辑目录和目的地。有没有办法将批处理文件写入提示的位置,询问用户要复制的目录,并询问用户要将其复制到的驱动器?这是我已经使用了一段时间的东西。@echooff::variablesetbackupdir="Destination"setbackupcmd=xcopy/e/h/f/y/v/c/i/r/g/k/decho.echo+++BackingUpData+++echo.echo.%backupcmd%"Directory\*.*""%backupdir%\Data"timeout

windows - Windows 的复制文件和集群预留

复制文件(使用CopyFile)的操作系统(XP、Vista、Win7)行为是什么?它什么时候保留要复制到的集群?以下哪项?它在开始复制之前保留所有目标集群它保留一些簇,然后复制一个文件部分到这些集群,然后,保留其他集群,然后将新文件部分复制到这些新的保留簇中,等 最佳答案 Explorer和cmd.exe使用的复制操作会立即保留大部分磁盘空间,至少在我的Windows732位系统上是这样,您可以通过查看卷上的可用空间看到这一点。据我所知,至少从NT4开始,这种行为在所有Windows版本中都是相同的。但是,有几个注意事项:Expl